iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 21
0
Modern Web

30 天打造 MERN Stack Boilerplate系列 第 21

Day 21 - Testing - Technique Stack

  • 分享至 

  • xImage
  •  

目前 Boilerplate 的測試覆蓋率還很低,主要是因為筆者對這塊也不是很熟,但還是針對我所使用的測試工具 Mocha 和 Travis 做個開場吧!

Mocha

Mocha 是針對非同步處理而設計的測試流程工具,在進行測試的過程中,可以接收一個 Callback 參數,當我們完成想進行的測試時,再呼叫 Callback Function 即可。

Chai

Chai 是一套 Assertion Library,因為光有 Mocha 來控制流程是不足以進行測試的,我們還需要 Assertion Library 來協助判斷何種情況該視為異常、何種情況該視為正常。

使用範例

以 locale API 的測試為例,在 Boilerplate 中是這麼使用上述的兩個工具的:

import chai from 'chai';
import { apiEngine } from '../../utils';
import localeAPI from '../../../build/common/api/locale';
import Errors from '../../../build/common/constants/Errors';
let expect = chai.expect;

describe('#localeAPI', () => {
  describe('#read()', () => {
    it('should download valid locale', (done) => {
      localeAPI(apiEngine)
        .read('en-us')
        .then((json) => {
          expect(json.locale).to.equal(validLocale);
          expect(json.messages).to.be.an('object');
          done();
        });      
    });

    it('should reject invalid locale', (done) => {
      // ...
    });
  });
});

完整程式碼:specs/endToEnd/apis/locale.js

本篇主要是工具的簡介,關於程式碼的詳細說明就留待下一篇介紹吧!

Travis

Travis 是一個線上整合測試的服務。每當我們進行一次 Commit,要如何確保前面寫好的功能不受影響?對單一開發者而言很簡單,只要在 Terminal 打上測試指令即可;但是對一個開發團隊而言呢?每個人的開發環境都不同,撰寫的 Feature 也不同,如何知道自己寫的程式是否影響到其他人寫的功能呢?這時候就需要 Travis 這樣的服務。Travis 可以 Hook 你的 Git Server(例如 Github),每當有新的 Commit 被 Push 到 Git Server,Travis 就會自動下載你的 Repo,接著按照自訂的腳本建置環境跑測試,哪一次 Commit 有無通過測試都可以在一目瞭然。詳細用法請參考 Day 23 - Testing - Travis


上一篇
Day 20 - Infrastructure - Mail Service
下一篇
Day 22 - Testing - 撰寫 End-To-End API 測試
系列文
30 天打造 MERN Stack Boilerplate30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言